"""
列表属于容器类型的数据，也是有序的，可以通过索引取元素值，及切片
列表常用的方法：增，删，改，查
"""
# 1、查询，通过元素的索引提取元素值
list1 = [1, 2, 3, 4, False, True, [3, 4, 5], (7, 8), 3.13, "jd_si_ao"]
print(len(list1))

# 获取索引为2的值
print(list1[2])  # 3

# 通过切片获取值
# 获取所有列表数据
print(list1[:])
# 将列表内容进行反转输出
print(list1[::-1])

# 2、修改数据：通过元素索引提取元素值之后重复赋值
print(list1[5])
list1[5] = 1
# 对原生的列表执行操作之后，原生列表会发生对应的变化
print(list1)

# 3、删除数据
# 第一种方式：使用pop方法通过索引删除元素，不指定索引删除最后一个
list1.pop()
print(list1)
list1.pop(6)
print(list1)
list1.pop(-3)
print(list1)

# 第二种方式：使用remove指定删除具体元素
list1.remove(False)
print(list1)
list1.remove((7, 8))
print(list1)

# 第三种方式，使用关键字进行删除
# 需要先提取元素再使用关键字
del list1[-2]
print(list1)
list1 = [1, 2, 3, 4, False, True, [3, 4, 5], (7, 8), 3.13, "jd_si_ao"]

# 第四种方式:清空列表
list1.clear()
print(list1)

# 4、增加数据
# 增加数据
# 第一种方式：使用append方法添加单个数据
list1.append("888")  # 默认加到列表的末尾
print(list1)
list1.append([1, 76, 5, 4])
print(list1)

# 第二种将多个元素拆分添加
list1.extend([1, 76, 5, 4])
print(list1)
# list1.extend("djsaiodjsioa")
list1.extend("888")
list1.extend("a")
print(list1)

# 第三种指定索引添加数据：insert
list1.insert(1, "777")
# 如果插入的索引值超过最大索引，那么默认插入到最后
# list1.insert(10, "666")
list1.insert(100, "666")
print(list1)

# 列表嵌套通过索引取元素值：
list1 = [1, 2, 3, 4, False, True, [3, 4, 5], (7, 8), 3.13, "jd_si_ao"]
# 如果列表中嵌套列表或者元组需要通过索引取值
# print(list1[6])
print(list1[6])  # [3, 4, 5]
print(list1[6][2])  # 5
print(list1[7][1])  # 8
